home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / AATW-SSC.ZIP / SCHAT.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-06-27  |  9KB  |  540 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Integer  INTEGER001
  23.     Integer  INTEGER002
  24.     Integer  INTEGER003
  25.     Integer  INTEGER004
  26.     Integer  INTEGER005
  27.     Integer  INTEGER006
  28.     Integer  INTEGER007
  29.     Integer  INTEGER008
  30.     Integer  INTEGER009
  31.     Integer  INTEGER010
  32.     Integer  INTEGER011
  33.     String   STRING001
  34.     String   STRING002
  35.     String   STRING003
  36.     String   STRING004
  37.     String   STRING005
  38.     String   STRING006
  39.     String   STRING007
  40.     String   STRING008
  41.     String   STRING009
  42.     String   STRING010
  43.     String   STRING011
  44.     String   STRING012
  45.     String   STRING013
  46.     String   STRING014
  47.     String   STRING015
  48.     String   STRING016
  49.     String   STRING017
  50.     String   STRING018
  51.     String   STRING019
  52.     String   STRING020
  53.  
  54. ;------------------------------------------------------------------------------
  55.  
  56.     SaveScrn
  57.     GetUser
  58.     PageOff
  59.     STRING007 = "         "
  60.     STRING006 = "─────────────────────────────────────────────────────────────────────────────"
  61.     STRING012 = ReadLine(PPEPath() + "schat.cnf", 1)
  62.     STRING013 = ReadLine(PPEPath() + "schat.cnf", 2)
  63.     STRING014 = ReadLine(PPEPath() + "schat.cnf", 3)
  64.     Sound 0
  65.     STRING017 = "@X08@X07@X0F"
  66.     STRING018 = "  ────────────── Super Split Screen Chat PPE v1.0 by " + STRING007 + " ──────────────@X00"
  67.     INTEGER007 = Time()
  68.     STRING019 = Chr(64) + Chr(88) + Chr(48) + Chr(67) + Chr(32) + "R" + Chr(101) + Chr(103) + Chr(105) + Chr(115) + Chr(116) + Chr(101) + Chr(114) + Chr(101) + Chr(100) + Chr(32)
  69.     INTEGER010 = 1
  70.     INTEGER011 = ReadLine(PPEPath() + "schat.cnf", 7)
  71.     STRING020 = "@X09" + Upper(ReadLine(PCBDat(), 2))
  72.     STRING001 = "@X07" + Upper(ReadLine(PCBDat(), 94)) + "@X08        "
  73.     For INTEGER005 = 1 To Len(STRING020) Step 3
  74.         INTEGER010 = Left(INTEGER010 * Asc(Mid(STRING020, INTEGER005, 1)), 6)
  75.     Next
  76.     If (INTEGER010 == INTEGER011) Then
  77.         BOOLEAN003 = 1
  78.     Endif
  79.     If (Exist(PPEPath() + "chatlog." + String(PcbNode()))) Then
  80.         FAppend 1, PPEPath() + "chatlog." + String(PcbNode()), 1, 3
  81.         FPutLn 1, STRING006
  82.     Else
  83.         FCreate 1, PPEPath() + "chatlog." + String(PcbNode()), 1, 3
  84.     Endif
  85.     FPutLn 1, "Chat initiated with " + U_Name() + " on " + String(Date()) + " at " + String(Time())
  86.     FPutLn 1
  87.     Cls
  88.     For INTEGER005 = 1 To 9 Step 4
  89.         AnsiPos 1, 12
  90.         Print Mid(STRING017, INTEGER005, 4) + STRING018
  91.         Delay 4
  92.     Next
  93.     :LABEL001
  94.     INTEGER001 = 1
  95.     INTEGER002 = 3
  96.     INTEGER003 = 1
  97.     INTEGER004 = 13
  98.     STRING008 = ""
  99.     STRING009 = ""
  100.     BOOLEAN001 = 0
  101.     If (Lower(ReadLine(PPEPath() + "schat.cnf", 5)) == "top") Then
  102.         STRING015 = ""
  103.         STRING016 = ""
  104.     Else
  105.         STRING016 = ""
  106.         STRING015 = ""
  107.     Endif
  108.     Print "@POFF@" + STRING014
  109.     Cls
  110.     If ((!Exist(PPEPath() + "schat.top") || !Exist(PPEPath() + "schat.bot")) || !Exist(PPEPath() + "schat.mid")) Then
  111.         PrintLn STRING012 + "┌──────────────┤ " + STRING013 + "                                 " + STRING014 + "   " + STRING013 + STRING007 + STRING012 + " ├──────────────┐"
  112.         Print "└" + STRING006 + "┘"
  113.         Newlines 10
  114.         Print "──" + STRING006
  115.         Newlines 10
  116.         PrintLn "┌" + STRING006 + "┐"
  117.         Print "└──────────┤ (" + STRING013 + "Ctrl" + STRING012 + ") " + STRING014 + "+ " + STRING012 + "(" + STRING013 + "C" + STRING012 + ")" + STRING014 + "olor, " + STRING012 + "(" + STRING013 + "R" + STRING012 + ")" + STRING014 + "edraw, "
  118.         Print STRING012 + "(" + STRING013 + "T" + STRING012 + ")" + STRING014 + "ype, or " + STRING012 + "(" + STRING013 + "Esc" + STRING012 + ")" + STRING014 + " to Quit" + STRING012 + " ├───────────┘"
  119.         AnsiPos 30, 1
  120.         Print STRING001
  121.     Else
  122.         PrintLn ReadLine(PPEPath() + "schat.top", 1)
  123.         Print ReadLine(PPEPath() + "schat.top", 2)
  124.         Newlines 10
  125.         Print ReadLine(PPEPath() + "schat.mid", 1)
  126.         Newlines 10
  127.         PrintLn ReadLine(PPEPath() + "schat.bot", 1)
  128.         Print ReadLine(PPEPath() + "schat.bot", 2)
  129.     Endif
  130.     AnsiPos 6, 12
  131.     Print STRING014 + " " + STRING015 + " " + STRING013 + ReadLine(PCBDat(), 2) + STRING014 + " " + STRING015 + " "
  132.     AnsiPos 69 - Len(U_Name()), 12
  133.     Print STRING014 + " " + STRING016 + " " + STRING013
  134.     Tokenize U_Name()
  135.     While (TokCount() > 0) Do
  136.         STRING004 = GetToken()
  137.         Print Left(STRING004, 1) + Lower(Right(STRING004, Len(STRING004) - 1)) + " "
  138.     EndWhile
  139.     Print STRING014 + STRING016 + " "
  140.     AnsiPos 32, 12
  141.     If (!BOOLEAN003) Print STRING019 + STRING014
  142.     AnsiPos INTEGER001, INTEGER002
  143.     If (Lower(ReadLine(PPEPath() + "schat.cnf", 5)) == "top") Then
  144.         :LABEL002
  145.         If (BOOLEAN002) Goto LABEL003
  146.         STRING003 = KInkey()
  147.         STRING002 = MInkey()
  148.         If (STRING003 <> "") Gosub LABEL006
  149.         If (STRING002 <> "") Gosub LABEL009
  150.         Goto LABEL002
  151.         :LABEL003
  152.     Else
  153.         :LABEL004
  154.         If (BOOLEAN002) Goto LABEL005
  155.         STRING002 = KInkey()
  156.         STRING003 = MInkey()
  157.         If (STRING003 <> "") Gosub LABEL006
  158.         If (STRING002 <> "") Gosub LABEL009
  159.         Goto LABEL004
  160.     Endif
  161.     :LABEL005
  162.     If (STRING008 <> "") FPutLn 1, STRING008
  163.     If (STRING009 <> "") FPutLn 1, "-" + STRING009
  164.     FClose 1
  165.     Cls
  166.     For INTEGER005 = 9 To 1 Step -4
  167.         AnsiPos 1, 12
  168.         Print Mid(STRING017, INTEGER005, 4) + STRING018
  169.         Delay 4
  170.     Next
  171.     RestScrn
  172.     If (Lower(ReadLine(PPEPath() + "schat.cnf", 4)) <> "yes") Delete PPEPath() + "chatlog." + String(PcbNode())
  173.     If (Lower(ReadLine(PPEPath() + "schat.cnf", 6)) == "yes") Then
  174.         INTEGER008 = Time()
  175.         INTEGER009 = (INTEGER008 - INTEGER007) / 60
  176.         If (INTEGER009 < 0) INTEGER009 = INTEGER009 + 86400
  177.         AdjTime INTEGER009
  178.     Endif
  179.     KbdStuff Chr(27)
  180.     End
  181.     :LABEL006
  182.     If (Asc(STRING003) < 32) Then
  183.         Select Case (STRING003)
  184.             Case Chr(3)
  185.                 BOOLEAN001 = !BOOLEAN001
  186.                 Print STRING014
  187.             Case Chr(7)
  188.                 Beep
  189.             Case Chr(8), 1
  190.                 STRING008 = Left(STRING008, Len(STRING008) - 1)
  191.                 AnsiPos INTEGER001, INTEGER002
  192.                 Print Chr(8) + " " + Chr(8)
  193.                 Dec INTEGER001
  194.             Case Chr(13)
  195.                 INTEGER001 = 1
  196.                 Inc INTEGER002
  197.                 If (INTEGER002 > 11) Then
  198.                     Gosub LABEL012
  199.                     INTEGER001 = 1
  200.                     If (STRING008 <> "") Inc INTEGER002
  201.                 Endif
  202.                 AnsiPos INTEGER001, INTEGER002
  203.                 If (STRING008 <> "") FPutLn 1, STRING008
  204.                 STRING008 = ""
  205.             Case Chr(18)
  206.                 Goto LABEL001
  207.             Case Chr(20), "top"
  208.                 Gosub LABEL014
  209.             Case Chr(27)
  210.                 BOOLEAN002 = 1
  211.         End Select
  212.     Else
  213.         STRING008 = STRING008 + STRING003
  214.         AnsiPos INTEGER001, INTEGER002
  215.         If (BOOLEAN001) Color Random(14) + 1
  216.         Print STRING003
  217.         Inc INTEGER001
  218.         If (INTEGER001 == 80) Then
  219.             INTEGER006 = 79
  220.             While (INTEGER006 > 0) Do
  221.                 If (Mid(STRING008, INTEGER006, 1) == " ") Then
  222.                     INTEGER001 = 1
  223.                     If (INTEGER002 == 11) Then
  224.                         Gosub LABEL012
  225.                         INTEGER001 = 1
  226.                         Inc INTEGER002
  227.                         Goto LABEL007
  228.                     Endif
  229.                     Inc INTEGER002
  230.                     :LABEL007
  231.                     AnsiPos INTEGER006, INTEGER002 - 1
  232.                     ClrEol
  233.                     AnsiPos INTEGER001, INTEGER002
  234.                     STRING010 = Right(STRING008, 79 - INTEGER006)
  235.                     FPutLn 1, Left(STRING008, INTEGER006)
  236.                     If (BOOLEAN001) Then
  237.                         For INTEGER005 = 1 To Len(STRING010)
  238.                             Color Random(14) + 1
  239.                             Print Mid(STRING010, INTEGER005, 1)
  240.                         Next
  241.                         Goto LABEL008
  242.                     Endif
  243.                     Print STRING010
  244.                     :LABEL008
  245.                     INTEGER001 = 80 - INTEGER006
  246.                     INTEGER006 = 0
  247.                     Continue
  248.                 Endif
  249.                 Dec INTEGER006
  250.                 If (INTEGER006 == 0) Then
  251.                     INTEGER001 = 1
  252.                     Inc INTEGER002
  253.                     If (INTEGER002 > 11) Then
  254.                         Gosub LABEL012
  255.                         INTEGER001 = 1
  256.                         Inc INTEGER002
  257.                     Endif
  258.                     AnsiPos INTEGER001, INTEGER002
  259.                     STRING010 = ""
  260.                     FPutLn 1, STRING008
  261.                 Endif
  262.             EndWhile
  263.             STRING008 = STRING010
  264.         Endif
  265.     Endif
  266.     Return
  267.     :LABEL009
  268.     If (Asc(STRING002) < 32) Then
  269.         Select Case (STRING002)
  270.             Case Chr(3)
  271.                 BOOLEAN001 = !BOOLEAN001
  272.                 Print STRING014
  273.             Case Chr(7)
  274.                 Beep
  275.             Case Chr(8), 1
  276.                 STRING009 = Left(STRING009, Len(STRING009) - 1)
  277.                 AnsiPos INTEGER003, INTEGER004
  278.                 Print Chr(8) + " " + Chr(8)
  279.                 Dec INTEGER003
  280.             Case Chr(13)
  281.                 INTEGER003 = 1
  282.                 Inc INTEGER004
  283.                 If (INTEGER004 > 21) Then
  284.                     Gosub LABEL013
  285.                     INTEGER003 = 1
  286.                     If (STRING009 <> "") Inc INTEGER004
  287.                 Endif
  288.                 AnsiPos INTEGER003, INTEGER004
  289.                 If (STRING009 <> "") FPutLn 1, "-" + STRING009
  290.                 STRING009 = ""
  291.             Case Chr(18)
  292.                 Goto LABEL001
  293.             Case Chr(20), "bottom"
  294.                 Gosub LABEL014
  295.             Case Chr(27)
  296.                 BOOLEAN002 = 1
  297.         End Select
  298.     Else
  299.         STRING009 = STRING009 + STRING002
  300.         AnsiPos INTEGER003, INTEGER004
  301.         If (BOOLEAN001) Color Random(14) + 1
  302.         Print STRING002
  303.         Inc INTEGER003
  304.         If (INTEGER003 == 80) Then
  305.             INTEGER006 = 79
  306.             While (INTEGER006 > 0) Do
  307.                 If (Mid(STRING009, INTEGER006, 1) == " ") Then
  308.                     INTEGER003 = 1
  309.                     If (INTEGER004 == 21) Then
  310.                         Gosub LABEL013
  311.                         INTEGER003 = 1
  312.                         Inc INTEGER004
  313.                         Goto LABEL010
  314.                     Endif
  315.                     Inc INTEGER004
  316.                     :LABEL010
  317.                     AnsiPos INTEGER006, INTEGER004 - 1
  318.                     ClrEol
  319.                     AnsiPos INTEGER003, INTEGER004
  320.                     STRING011 = Right(STRING009, 79 - INTEGER006)
  321.                     FPutLn 1, "-" + Left(STRING009, INTEGER006)
  322.                     If (BOOLEAN001) Then
  323.                         For INTEGER005 = 1 To Len(STRING011)
  324.                             Color Random(14) + 1
  325.                             Print Mid(STRING011, INTEGER005, 1)
  326.                         Next
  327.                         Goto LABEL011
  328.                     Endif
  329.                     Print STRING011
  330.                     :LABEL011
  331.                     INTEGER003 = 80 - INTEGER006
  332.                     INTEGER006 = 0
  333.                     Continue
  334.                 Endif
  335.                 Dec INTEGER006
  336.                 If (INTEGER006 == 0) Then
  337.                     INTEGER003 = 1
  338.                     Inc INTEGER004
  339.                     If (INTEGER004 > 21) Then
  340.                         Gosub LABEL013
  341.                         INTEGER003 = 1
  342.                         Inc INTEGER004
  343.                     Endif
  344.                     AnsiPos INTEGER003, INTEGER004
  345.                     STRING011 = ""
  346.                     FPutLn 1, "-" + Left(STRING009, Len(STRING009) - 1)
  347.                 Endif
  348.             EndWhile
  349.             STRING009 = STRING011
  350.         Endif
  351.     Endif
  352.     Return
  353.     :LABEL012
  354.     Print STRING014
  355.     For INTEGER005 = 3 To 11
  356.         AnsiPos 1, INTEGER005
  357.         ClrEol
  358.     Next
  359.     AnsiPos 1, 3
  360.     If (BOOLEAN001) Then
  361.         For INTEGER005 = 1 To Len(STRING008)
  362.             Color Random(14) + 1
  363.             Print Mid(STRING008, INTEGER005, 1)
  364.         Next
  365.     Else
  366.         Print STRING008
  367.     Endif
  368.     INTEGER001 = GetX()
  369.     INTEGER002 = GetY()
  370.     AnsiPos INTEGER001, INTEGER002
  371.     Return
  372.     :LABEL013
  373.     Print STRING014
  374.     For INTEGER005 = 13 To 21
  375.         AnsiPos 1, INTEGER005
  376.         ClrEol
  377.     Next
  378.     AnsiPos 1, 13
  379.     If (BOOLEAN001) Then
  380.         For INTEGER005 = 1 To Len(STRING009)
  381.             Color Random(14) + 1
  382.             Print Mid(STRING009, INTEGER005, 1)
  383.         Next
  384.     Else
  385.         Print STRING009
  386.     Endif
  387.     INTEGER003 = GetX()
  388.     INTEGER004 = GetY()
  389.     AnsiPos INTEGER003, INTEGER004
  390.     Return
  391.     :LABEL014
  392.     AnsiPos 79, 23
  393.     SaveScrn
  394.     AnsiPos 11, 6
  395.     PrintLn STRING012 + "┌" + Left(STRING006, 58) + "┐"
  396.     AnsiPos 11, 7
  397.     PrintLn "│" + STRING014 + "                                                          " + STRING012 + "│"
  398.     AnsiPos 11, 8
  399.     PrintLn "└" + Left(STRING006, 58) + "┘"
  400.     AnsiPos 13, 7
  401.     Print STRING014 + "File: "
  402.     STRING004 = ""
  403.     STRING005 = ""
  404.     INTEGER005 = 0
  405.     While (STRING004 <> Chr(13)) Do
  406.         STRING004 = KInkey()
  407.         If (STRING004 <> Chr(13)) Then
  408.             If ((STRING004 == Chr(8)) && (INTEGER005 > 0)) Then
  409.                 Print Chr(8) + " " + Chr(8)
  410.                 Dec INTEGER005
  411.                 STRING005 = Left(STRING005, Len(STRING005) - 1)
  412.                 Continue
  413.             Endif
  414.             If ((Asc(STRING004) > 32) && (INTEGER005 < 50)) Then
  415.                 STRING005 = STRING005 + STRING004
  416.                 Print STRING004
  417.                 Inc INTEGER005
  418.             Endif
  419.         Endif
  420.     EndWhile
  421.     If (Exist(STRING005)) Then
  422.         Print "@CLS@@POFF@"
  423.         DispFile STRING005, 0
  424.         Newline
  425.         Print "@WAIT@"
  426.     Endif
  427.     RestScrn
  428.     AnsiPos INTEGER001, INTEGER002
  429.     Return
  430.  
  431. ;------------------------------------------------------------------------------
  432. ;
  433. ; Usage report (before postprocessing)
  434. ;
  435. ; ■ Statements used :
  436. ;
  437. ;    1       End
  438. ;    3       Cls
  439. ;    4       ClrEol
  440. ;    6       Color 
  441. ;    101     Goto 
  442. ;    96      Let 
  443. ;    37      Print 
  444. ;    7       PrintLn 
  445. ;    72      If 
  446. ;    1       DispFile 
  447. ;    1       FCreate 
  448. ;    1       FAppend 
  449. ;    1       FClose 
  450. ;    11      FPutLn 
  451. ;    1       GetUser
  452. ;    1       Delete 
  453. ;    1       AdjTime 
  454. ;    12      Gosub 
  455. ;    5       Return
  456. ;    2       Delay 
  457. ;    15      Inc 
  458. ;    5       Dec 
  459. ;    1       Newline
  460. ;    4       Newlines 
  461. ;    1       Tokenize 
  462. ;    2       Beep
  463. ;    1       KbdStuff 
  464. ;    31      AnsiPos 
  465. ;    2       SaveScrn
  466. ;    2       RestScrn
  467. ;    1       Sound 
  468. ;    1       PageOff
  469. ;
  470. ;
  471. ; ■ Functions used :
  472. ;
  473. ;    3       -
  474. ;    1       *
  475. ;    1       /
  476. ;    164     +
  477. ;    13      -
  478. ;    29      ==
  479. ;    13      <>
  480. ;    13      <
  481. ;    9       <=
  482. ;    11      >
  483. ;    18      >=
  484. ;    63      !
  485. ;    24      &&
  486. ;    11      ||
  487. ;    16      Len(
  488. ;    7       Lower()
  489. ;    2       Upper()
  490. ;    9       Mid()
  491. ;    10      Left()
  492. ;    3       Right()
  493. ;    39      Chr()
  494. ;    4       Asc()
  495. ;    6       Random()
  496. ;    1       Date()
  497. ;    3       Time()
  498. ;    3       U_Name()
  499. ;    6       String()
  500. ;    3       PCBDat()
  501. ;    22      PPEPath()
  502. ;    4       PcbNode()
  503. ;    18      ReadLine()
  504. ;    1       GetToken()
  505. ;    5       Exist()
  506. ;    2       GetX()
  507. ;    2       GetY()
  508. ;    3       KInkey()
  509. ;    2       MInkey()
  510. ;    1       TokCount()
  511. ;
  512. ;------------------------------------------------------------------------------
  513. ;
  514. ; Analysis flags : Ad
  515. ;
  516. ; A - Adjust online time remaining ■ 5
  517. ;     Program modify the amount of online time remaining, this may
  518. ;     be a way to bypass time limits
  519. ;     ■ Search for : ADJTIME
  520. ;
  521. ; d - Access PCBOARD.DAT ■ 2
  522. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  523. ;     for many PPE so they can find various informations on the system
  524. ;     (system paths, max number of lines in messages, ...) but it may also
  525. ;     be a way to gather vital informations.
  526. ;     ■ Search for : PCBDAT()
  527. ;
  528. ;------------------------------------------------------------------------------
  529. ;
  530. ; Postprocessing report
  531. ;
  532. ;    9       For/Next
  533. ;    4       While/EndWhile
  534. ;    28      If/Then or If/Then/Else
  535. ;    2       Select Case
  536. ;
  537. ;------------------------------------------------------------------------------
  538. ;                 AEGiS Corp - Break the routines, code against the machines!
  539. ;------------------------------------------------------------------------------
  540.